<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <script src="../vue.js"></script>
  </head>

  <body>
    <!-- 
      v-model数据双向绑定:
        * 基础使用
          - 数据单向绑定（v-bind）：数据只能从data流向页面
          - 数据双向绑定：数据既能从data流向页面，也能从页面流向data
          - 一般都是对可输入性的表单元素进行双向绑定,用来控制表单展示内容,和收集表单数据
        * v-model本质:`<input type="text" :value="xxx" @input="xxx=$event.target.value" />`
          1. 给表单单向绑定了一个数据
          2. 给表单绑定一个input事件,表单改变以后,获取最新数据设置给data中
        * 收集表单数据
          - 输入文本框:使用字符串收集
          - 多选框多选状态:使用数组收集
          - 多选框单选状态:使用布尔值收集
          - 单选框:使用字符串收集
          - 下拉列表单选:使用字符串收集
          - 下拉列表多选:使用数组收集
          - 多行文本框:使用字符串收集
        * 修饰符
          - .lazy - 取代 input 监听 change 事件
          - .number - 输入字符串转为有效的数字(和parseInt类似,但是无法转为number的时候,直接输出原字符串)
          - .trim - 输入首尾空格过滤
     -->
    <div id="app">
      <form action="">
        <p>
          请输入用户名
          <input type="text" v-model.lazy="username" />
        </p>
        <p>
          请输入留言
          <input type="text" v-model.trim="password" />
        </p>
        <p>
          请输入你的年龄
          <input type="text" v-model.number="age" />
        </p>
      </form>
    </div>
    <script>
      Vue.config.productionTip = false;

      const vm = new Vue({
        el: "#app",
        data() {
          return {
            username: "",
            password: "",
            age: 0,
          };
        },
      });
    </script>
  </body>
</html>
